# Directories
SRCDIR := src
DOCDIR := doc
DIR := .

# Files
SRC := $(wildcard $(SRCDIR)/lsq.c)
TEX := lsq.tex
REF := lsq
BIB := $(wildcard $(DOCDIR)/*.bib)
EXE := lsq
PDF := $(DOCDIR)/lsq.pdf

# Compiler and flags
CC := gcc
CFLAGS := -Wall -Wextra

.PHONY: all clean

all: $(EXE) $(PDF)

$(EXE): $(SRC) $(SRCDATA)
	$(CC) $(SRC) $(CFLAGS) -o $(EXE)

run: $(SRCDATA)
	$(CC) $(SRCDIR)/lsq_data.c $(CFLAGS) -o gen_data && ./gen_data && rm -f gen_data
	./$(EXE)
	rm -f testdata.txt
	mv output.dat $(DOCDIR)/output.dat

$(PDF): $(DOCDIR)/$(TEX) $(BIB) $(clean) $(EXE) run
	cd $(DOCDIR) && graph -T ps < output.dat > output.eps
	cd $(DOCDIR) && xelatex $(TEX) && bibtex $(REF) && xelatex $(TEX) && xelatex $(TEX) 
	cd $(DOCDIR) && rm -f *.aux *.bbl *.blg *.log *.dat *.eps && cd ..

clean:
	rm -f $(EXE) $(PDF) gen_dataj *.dat
	rm -f $(SRCDIR)/gen_data $(SRCDIR)/testdata.txt
	cd $(DOCDIR) && rm -f *.aux *.bbl *.blg *.log *.pdf *.txt *.dat *.eps && cd ..

exe: $(EXE)

doc: $(PDF)

